package com.huiminpay.merchant.service;

import com.huiminpay.common.cache.domain.BusinessCast;
import com.huiminpay.common.cache.domain.CommonErrorCode;
import com.huiminpay.common.cache.util.PhoneUtil;
import com.huiminpay.merchant.convert.MerchantConvent;
import com.huiminpay.merchant.entity.Merchant;
import com.huiminpay.merchant.mapper.MerchantMapper;
import com.yh.huiminpay.merchant.api.IMerchantService;
import com.yh.huiminpay.merchant.dto.MerchantDTO;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;

@Slf4j
@org.apache.dubbo.config.annotation.Service
public class MerchantServiceImpl implements IMerchantService {
    @Autowired
    MerchantMapper merchantMapper;
    //测试类查询id
    @Override
    public MerchantDTO queryMerchantById(Long merchantId) {
        Merchant merchant = merchantMapper.selectById(merchantId);
        MerchantDTO merchantDTO = new MerchantDTO();
        BeanUtils.copyProperties(merchant,merchantDTO);
        return merchantDTO;
    }

    @Override
    /**
     * 用户注册成功之后，需要三张表，商户表只需要设置手机号保存，
     * 保存之后在返回前台一个手机号，让用户看见
     */
    public MerchantDTO createMerchant(MerchantDTO merchantDTO) {
        //判断应用类是否有值
        if(merchantDTO == null){
            BusinessCast.cast(CommonErrorCode.E_100101);
        }
        //判断手机号码是否为空
        if(StringUtils.isEmpty(merchantDTO.getMobile())){
            BusinessCast.cast(CommonErrorCode.E_200230);
        }

//        Merchant merchant = new Merchant();
//        merchant.setAuditStatus("0");
//        //设置手机号
//        merchant.setMobile(merchantDTO.getMobile());
        Merchant merchant = MerchantConvent.INSTANCE.dto2entity(merchantDTO);
        //设置审核状态0‐未申请,1‐已申请待审核,2‐审核通过,3‐审核拒绝
        merchant.setAuditStatus("0");
        //保存商户
        merchantMapper.insert(merchant);
        //将新增商户id返回
//        merchantDTO.setId(merchant.getId());
        MerchantDTO merchantDTO1=MerchantConvent.INSTANCE.entity2dto(merchant);
        return merchantDTO1;
    }

    @Override
    public MerchantDTO applyMerchant(Long id, MerchantDTO merchantDTO) {
        //根据商户id获取商户信息
        Merchant merchant=merchantMapper.selectById(id);
        Merchant merchant1 = MerchantConvent.INSTANCE.dto2entity(merchantDTO);
        merchant1.setId(id);
        merchant1.setMobile(merchant.getMobile());
        merchant1.setAuditStatus("1");
        merchantMapper.updateById(merchant1);
        return MerchantConvent.INSTANCE.entity2dto(merchant1);
    }
}
